package com.zhijiang.hospital.service.impl;

import com.zhijiang.hospital.mapper.MenuMapper;
import com.zhijiang.hospital.mapper.RoleMapper;
import com.zhijiang.hospital.mapper.SysRoleMenuMapper;
import com.zhijiang.hospital.service.MenuService;
import com.zhijiang.util.redis.RedisCache;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class MwnuServiceImpl implements MenuService {
    @Autowired
    MenuMapper menuMapper;
    @Autowired
    RoleMapper roleMapper;
    @Autowired
    RedisCache redisCache;
    @Autowired
    SysRoleMenuMapper sysRoleMenuMapper;
//    @Override
//    public ResponseResult add(SysMenu sysMenu, HttpServletRequest request) {
//        //解析token
//        String token = request.getHeader("token");
//        String userId;
//        try{
//            userId = JwtUtil.parseJWT(token).getSubject();
//
//
//        }catch (Exception e){
//            e.printStackTrace();
//            throw new RuntimeException("token非法");
//        }
//        LoginUser loginUser = redisCache.getCacheObject(RedisConstants.LOGIN + userId);
//        SysMenu menu = menuMapper.selectOne(new LambdaQueryWrapper<SysMenu>()
//                .eq(SysMenu::getMenuName,sysMenu.getMenuName()).eq(SysMenu::getDelFlag,1).eq(SysMenu::getStatus,1));
//        if (!Objects.isNull(menu)){
//            throw new RuntimeException("此权限已存在");
//        }
//        //sysMenu.setCreateBy(loginUser.getUsername());
//        //sysMenu.setUpdateBy(loginUser.getUsername());
//        sysMenu.setDelFlag("1");
//        sysMenu.setStatus("1");
//        menuMapper.insert(sysMenu);
//        return new  ResponseResult(200,"成功");
//    }
//
//    @Override
//    public ResponseResult allMenu( ) {
//        List<SysMenu> sysMenus = menuMapper.selectList(new QueryWrapper<SysMenu>()
//                .eq("DEL_FLAG",1).eq("STATUS",1));
//        return new ResponseResult(200, sysMenus);
//    }
//
//    @Override
//    public ResponseResult delete(SysMenu sysMenu) {
//        SysMenu menu= menuMapper.selectOne(new LambdaQueryWrapper<SysMenu>()
//                .eq(SysMenu::getMenuid,sysMenu.getMenuid()));
//        if (Objects.isNull(menu)){
//            throw new RuntimeException("权限不存在");
//        }
//        if (menu.getStatus().equals("1")){
//            throw new RuntimeException("权限未停用");
//        }
//      menu.setDelFlag("0");
//        return new ResponseResult(200,menuMapper.updateById(menu));
//    }
//
//    @Override
//    public ResponseResult relevancy(RoleDto roleDto) {
////        SysRole sysRole = roleMapper.selectById(new LambdaQueryWrapper<SysRole>()
////                .eq(SysRole::getDelFlag,1).eq(SysRole::getStatus,1)
////                .eq(SysRole::getRoleid,roleDto.getRoleid()));
//        SysRole sysRole = roleMapper.getRoleId(roleDto.getRoleid());
////        SysMenu sysMenu = menuMapper.selectById(new LambdaQueryWrapper<SysMenu>()
////                .eq(SysMenu::getDelFlag,1).eq(SysMenu::getStatus,1)
////                .eq(SysMenu::getMenuid,roleDto.getMenuid()));
//        SysMenu sysMenu = menuMapper.getMenuId(roleDto.getMenuid());
//
//        if (Objects.isNull(sysMenu)||Objects.isNull(sysRole)){
//            throw new RuntimeException("该角色或者该权限不存在");
//        }
//        SysRoleMenu sysRoleMenuOen = sysRoleMenuMapper.selectOne(new LambdaQueryWrapper<SysRoleMenu>()
//                .eq(SysRoleMenu::getMenuid, roleDto.getMenuid())
//                .eq(SysRoleMenu::getRoleid, roleDto.getRoleid()));
//        if (!Objects.isNull(sysRoleMenuOen)){
//            throw new RuntimeException("该关联已存在");
//        }
//        SysRoleMenu sysRoleMenu = new SysRoleMenu();
//        BeanUtils.copyProperties(roleDto,sysRoleMenu);
//        sysRoleMenu.setCode(IdWorker.getIdStr());
//        roleMapper.relevancy(sysRoleMenu);
//        return new ResponseResult(200,"权限添加成功");
//    }
//
//    @Override
//    public ResponseResult stopMenuOne(RoleDto roleDto) {
//        //判断权限是否有关联
//        List<SysRoleMenu> roleMenu = roleMapper.getRoleMenu(roleDto);
//        if (roleMenu.size()>0){
//            throw new RuntimeException("该权限存在关联");
//        }
//        //判断权限是否已删除或停用
//        SysMenu sysMenu = menuMapper.selectById(new LambdaQueryWrapper<SysMenu>()
//                .eq(SysMenu::getDelFlag, 1).eq(SysMenu::getStatus, 1)
//                .eq(SysMenu::getMenuid, roleDto.getMenuid()));
//        if (Objects.isNull(sysMenu)){
//            throw new RuntimeException("不存在权限");
//        }
//        sysMenu.setStatus("0");
//        menuMapper.updateById(sysMenu);
//        //修改权限状态为停用
//        return new ResponseResult(200,"成功");
//    }
//
//    @Override
//    public ResponseResult relieMenu(RoleDto roleDto) {
//        SysRoleMenu sysRoleMenu = sysRoleMenuMapper.selectOne(new LambdaQueryWrapper<SysRoleMenu>()
//                .eq(SysRoleMenu::getRoleid, roleDto.getRoleid())
//                .eq(SysRoleMenu::getMenuid, roleDto.getMenuid()));
//        if (Objects.isNull(sysRoleMenu)){
//            throw new RuntimeException("该角色不存在此权限");
//        }
//        sysRoleMenuMapper.delete(new LambdaQueryWrapper<SysRoleMenu>()
//                .eq(SysRoleMenu::getRoleid, roleDto.getRoleid())
//                .eq(SysRoleMenu::getMenuid, roleDto.getMenuid()));
//        return null;
//    }
}
